//gioco dell'oca in javascript
//sviluppato da mattia franchetto con jquery e la user interface
//itis peano - 3bi

//inizializzo variabili e array, funzioni di callback

$(document).ready(function(){
	
	posiz1=1;
	posiz2=1;
	locanda=3;
	locanda2=3;

	cancella1=1;
	cancella2=1;

	play1=true;
	prigione=false;
	prigione2=false;
	
	cl=1;
	cl2=1;

	casoche=new Array(5,14,23,32,41,50,59);

	casspec=new Array(19,31,42,52,58);	


   	$("#corpo").animate({width:760},1250);
	
	$("#corpo").animate({height:700},300);

	$("input[name='lanciadadi']").click(playing);

	$("input[name='riavvia']").click(restart);
	
	$("input[name='closeall']").click(function(){
		
		$("#corpo").effect('explode');
		$("#hiddenbeforeexplode").html("Grazie per aver giocato!");
							
	});
							
//aggiungo i tooltip							
	$("td").mouseenter(function(){
		
		classe=$(this).attr('class');
		if (classe!=""){
			
			tooltip=$(this).attr('title');
			
			$("<div class=\"displaytooltip\">"+tooltip+"</div>").appendTo($(this))
		
		}
	});

//elimino i tooltip
	$("td").mouseleave(function(){
		
		$("div").remove(".displaytooltip");
	});
	
			

});

//cancella le caselle in accesso dopo la vittoria
function afterwin(){
	
	if (posiz1==63){
		clear1(cancella1)}
	else{
		clear2(cancella2)
	}
}

//cancella le posizioni del giocatore 1
function clear1(cl){
	
	 if ($(cl).hasClass('fungorosso')){
		 
		$(cl).removeClass('fungorosso')}
	else{
		
		if ($(cl).hasClass('fungorossoverde')){
			$(cl).removeClass('fungorossoverde');
			$(cl).addClass('fungoverde')
		}
	}
}

//cancella le posizioni del giocatore 2
function clear2(cl2){
	
	if ($(cl2).hasClass('fungoverde')){
		
		$(cl2).removeClass('fungoverde')}
		
	else{
		if ($(cl2).hasClass('fungorossoverde')){
			
			$(cl2).removeClass('fungorossoverde');
			$(cl2).addClass('fungorosso')
		}
	}
}

//muove la pedina del giocatore 1
function move1(posiz){
	
			if ($(posiz).hasClass('fungoverde')){
				
				$(posiz).removeClass('fungoverde');
				$(posiz).addClass('fungorossoverde')}
				
			else{
				$(posiz).addClass('fungorosso')
		}
}
//muove la pedine del giocatore 2
function move2(posiz2){
	
				if ($(posiz2).hasClass('fungorosso')){
					
					$(posiz2).removeClass('fungorosso');
					$(posiz2).addClass('fungorossoverde')}
					
				else{
					$(posiz2).addClass('fungoverde')
				}
}
			
//funzione per riavviare
function restart(){
	
	location.reload()
}

//numero random
function numrnd(){

	n=Math.round((Math.random()*10)+2);
	
	return n;
}

//gioco e cronaca
function playing(){
	
	if (play1){
		
		cancella1="#c"+posiz1;
		$("#turno").html("Sta giocando: Giocatore Rosso");
		play1=false;
		
		if (posiz1==casspec[0] && locanda<3){
			
			$("#azione").html("Sei nella locanda, devi aspettare 3 turni.");
			locanda+=1}
			
		else{
			locanda=3;
				
			if (posiz1==casspec[2] && prigione && prigione2){
					
				$("#azione").html("Sei libero perche' anche l'altro giocatore e' in prigione!");
				prigione=false}
					
				else if (posiz1==casspec[2] && prigione && !prigione2){
						
					dado=numrnd();						
					$("#ris").html("Risultato del dado:  "+dado);
							
					if (dado>7){
									
						$("#azione").html("Sei libero!");
						prigione=false}
									
					else{
						$("#azione").html("Mi dispiace ma rimani ancora in prigione!")}}
									
				else{
							
					dado=numrnd();
					$("#ris").html("Risultato del dado:  "+dado);
					posiz1+=dado;
						
					switch (posiz1){
							
							
						case casspec[0]:
							$("#azione").html("Sei entrato nella locanda, devi aspettare 3 turni.");
							locanda=0;
							break;
							
						case casspec[1]:
							prigione=true;
							posiz1=42;
							$("#azione").html("Sei nel pozzo, finisci in prigione!")
							break;
									
						case casspec[3]:
							posiz1=39;
							$("#azione").html("Labirinto,torni alla casella 39.")
							break;
							
						case casspec[2]:
							$("#azione").html("Sei rimasto imprigionato!");
							prigione=true;
							break;
							
						case casspec[4]:
							$("#azione").html("Scheletro! Torni alla casella 1.");
							posiz1=1;
							break;
							
						case casoche[0]:
						case casoche[1]:
						case casoche[2]:
						case casoche[3]:
						case casoche[4]:
						case casoche[5]:
						case casoche[6]:
							posiz1+=dado;
							
							if (posiz1>63){
								
								diff1=posiz1-63;
								posiz1=posiz1-dado-diff1;
								$("#azione").html("Peccato, ma hai superato il traguardo! Retrocedi di:  "+diff1)}
								
							else if (posiz1==63){
								
								$("#azione").html("Avanzi di:  "+dado+" e vinci!");
							
								if (confirm('Il Giocatore Rosso ha vinto! Volete rigiocare?')){
								
    									restart()}
																					
								else{
									afterwin();
									$("input[name='lanciadadi']").attr("disabled",true)
								}
							}

							else{

								$("#azione").html("Sei in una casella con l'Oca, avanzi di : "+(dado*2))
							}
							
							break;
							
						case 63:
							$("#azione").html("Avanzi di:  "+dado+" e vinci!");
							
							if (confirm('Il Giocatore Rosso ha vinto! Volete rigiocare?')){
								
    							restart()}
																					
							else{
								afterwin();
								$("input[name='lanciadadi']").attr("disabled",true)
							}
																						
							break;
																						
						}
						
						if (posiz1>63){
							
							diff1=posiz1-63;
							posiz1=posiz1-dado-diff1;
							$("#azione").html("Peccato, ma hai superato il traguardo! Retrocedi di:  "+diff1)}
							
						else{
							$("#azione").html("Avanzi di:  "+dado)
						}
			}
	}
			
	
	posizione1="#c"+posiz1;
	clear1(cancella1);
	move1(posizione1)
}

	else {	
		cancella2="#c"+posiz2;
		$("#turno").html("Sta giocando: Giocatore Verde");
		play1=true;
		
		if (posiz2==casspec[0] && locanda2<3){
			
			$("#azione").html("Sei nella locanda, devi aspettare 3 turni.");
			locanda2+=1}
			
		else{
			locanda2=3;
				
			if (posiz2==casspec[2] && prigione2 && prigione){
					
				$("#azione").html("Sei libero perche' anche l'altro giocatore e' in prigione!");
				prigione2=false}
					
				else if (posiz2==casspec[2] && prigione2 && !prigione){
						
					dado=numrnd();						
					$("#ris").html("Risultato del dado:  "+dado);
					if (dado>7){
						$("#azione").html("Sei libero!");
						prigione2=false;}
						
					else{
						$("#azione").html("Mi dispiace ma rimani ancora in prigione!")}}
				else{
					
					dado=numrnd();
					$("#ris").html("Risultato del dado:  "+dado);
					posiz2+=dado;
					
					
					switch (posiz2){
						
						case casspec[0]:
							$("#azione").html("Sei entrato nella locanda, devi aspettare 3 turni.");
							locanda2=0;
							break;
							
						case casspec[1]:
							prigione=true;
							posiz2=42;
							$("#azione").html("Sei nel pozzo, finisci in prigione!")
							break;
									
						case casspec[3]:
							posiz2=39;
							$("#azione").html("Labirinto,torni alla casella 39.")
							break;
							
						case casspec[2]:
							$("#azione").html("Sei rimasto imprigionato!");
							prigione2=true;
							break;
							
						case casspec[4]:
							$("#azione").html("Scheletro! Torni alla casella 1.");
							posiz2=1;
							break;
							
						case casoche[0]:
						case casoche[1]:
						case casoche[2]:
						case casoche[3]:
						case casoche[4]:
						case casoche[5]:
						case casoche[6]:
							posiz2+=dado;
							
							if (posiz2>63){
								
								diff2=posiz2-63;
								posiz2=posiz2-dado-diff2;
								$("#azione").html("Peccato, ma hai superato il traguardo! Retrocedi di:  "+diff1)}
								
							else if (posiz2==63){
								
								$("#azione").html("Avanzi di:  "+dado+" e vinci!");
							
								if (confirm('Il Giocatore Verde ha vinto! Volete rigiocare?')){
								
    									restart()}
																					
								else{
									afterwin();
									$("input[name='lanciadadi']").attr("disabled",true)
								}
							}

							else{

								$("#azione").html("Sei in una casella con l'Oca, avanzi di : "+(dado*2))
							}
							
							break;
								
						case 63:
							$("#azione").html("Avanzi di:  "+dado+" e vinci!");
							
							if (confirm('Il Giocatore Verde ha vinto! Volete rigiocare?')){
    							restart()}
							else{
								afterwin();
								$("input[name='lanciadadi']").attr("disabled",true)
							}
							break;
																						
						}
						
						if (posiz2>63){
							
							diff2=posiz2-63;
							posiz2=posiz2-dado-diff2;
							$("#azione").html("Peccato, ma hai superato il traguardo! Retrocedi di:  "+diff2)}
						else{
							$("#azione").html("Avanzi di:  "+dado)
						}
			}
	}
			
	
	posizione2="#c"+posiz2;
	clear2(cancella2);
	move2(posizione2);
}

}
